package com.tanhua.sso.service;

import com.tanhua.sso.vo.ErrorResult;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;

import java.time.Duration;

@Service
@Slf4j
public class SmsService {

    @Autowired
    private RedisTemplate<String,String> redisTemplate;

    public ErrorResult sendCheckCode(String phone) {

        //判断手机号是否合法


        String key = "CHECK_CODE_" + phone;

        //判断redis中的验证码是否还存在
        if (redisTemplate.hasKey(key)){
            return ErrorResult.builder().errCode("000001").errMessage("上一次的验证码还未失效").build();
        }

        //如果上述key在redis中不存在了, 则再次调用发送短信验证码的服务, 将验证码存入redis
        //aliyun的短信服务没法用, 这里把验证码写死
//        String code = sendSms(phone);
        String code = "123456";

        //如果发送短信失败则这里接收不到验证码, 返回发送失败
        if(StringUtils.isEmpty(code)){
            return ErrorResult.builder().errCode("000000").errMessage("发送验证码失败").build();
        }

        //如果接受到了验证码则存入redis, 设置时长为10min
        redisTemplate.opsForValue().set(key,code, Duration.ofMinutes(10));

        //成功发送返回null
        return null;
    }
}
